{
  "name": "Disassembly",
  "scopeName": "source.disassembly",
  "uuid": "9ade615f-5d82-4ac5-b22f-a1998c356ebe",
  "patterns": [
    {
      "comment": "x86 Address, bytes and opcode",
      "name": "meta.instruction",
      "match": "^([A-Za-z0-9]+):\\s([A-Z0-9]{2}\\s)+>?\\s+(\\w+)",
      "captures": {
        "1": {"name": "constant.numeric"},
        "3": {"name": "keyword.opcode"}
      }
    },
    {
      "comment": "ARM Address, bytes and opcode",
      "name": "meta.instruction",
      "match": "^libIGL.so\\[([A-Za-z0-9]+)\\]\\s+(\\<\\+[0-9]*\\>):\\s+([A-Za-z]+.?[A-Za-z]*)",
      "captures": {
        "1": {"name": "constant.numeric"},
        "3": {"name": "keyword.opcode"}
      }
    },
    {
      "comment": "ARM64 Address, bytes and opcode",
      "name": "meta.instruction",
      "match": "^liblog.so\\[([A-Za-z0-9]+)\\]\\s+(\\<\\+[0-9]*\\>):\\s+([A-Za-z]+.?[A-Za-z]*)",
      "captures": {
        "1": {"name": "constant.numeric"},
        "3": {"name": "keyword.opcode"}
      }
    },
    {
      "comment": "Numeric constant",
      "name": "constant.numeric",
      "match": "(\\$|\\b)((0x)|[0-9])[A-Za-z0-9]+\\b"
    },
    {
      "comment": "x86 Register",
      "name": "variable.language",
      "match": "%[A-Za-z][A-Za-z0-9]*"
    },
    {
      "comment": "ARM Register",
      "name": "variable.language",
      "match": "r\\d+"
    },
    {
      "comment": "ARM Register Shortnames",
      "name": "variable.language",
      "match": "(fp|sp|lr|pc|wzr|xzr)"
    },
    {
      "comment": "ARM64 Register",
      "name": "variable.language",
      "match": "(x|w)[0-9]+"
    },
    {
      "comment": "End of line comment",
      "name": "comment.line.semicolon",
      "match": ";.*$"
    }
  ]
}
